﻿using System.Collections.Generic;
using System.Windows.Forms;

namespace de.mastersign.shell
{
    internal partial class KeyHelper
    {
        public static readonly IDictionary<Keys, bool> PrintableKeys = new Dictionary<Keys, bool>();

        private static void InitPrintables()
        {
            PrintableKeys[Keys.Modifiers] = false;
            PrintableKeys[Keys.None] = false;
            PrintableKeys[Keys.LButton] = false;
            PrintableKeys[Keys.RButton] = false;
            PrintableKeys[Keys.Cancel] = false;
            PrintableKeys[Keys.MButton] = false;
            PrintableKeys[Keys.XButton1] = false;
            PrintableKeys[Keys.XButton2] = false;
            PrintableKeys[Keys.Back] = false;
            PrintableKeys[Keys.Tab] = false;
            PrintableKeys[Keys.LineFeed] = false;
            PrintableKeys[Keys.Clear] = false;
            PrintableKeys[Keys.Enter] = false;
            PrintableKeys[Keys.Return] = false;
            PrintableKeys[Keys.ShiftKey] = false;
            PrintableKeys[Keys.ControlKey] = false;
            PrintableKeys[Keys.Menu] = false;
            PrintableKeys[Keys.Pause] = false;
            PrintableKeys[Keys.Capital] = false;
            PrintableKeys[Keys.CapsLock] = false;
            PrintableKeys[Keys.HanguelMode] = false;
            PrintableKeys[Keys.HangulMode] = false;
            PrintableKeys[Keys.KanaMode] = false;
            PrintableKeys[Keys.JunjaMode] = false;
            PrintableKeys[Keys.FinalMode] = false;
            PrintableKeys[Keys.HanjaMode] = false;
            PrintableKeys[Keys.KanjiMode] = false;
            PrintableKeys[Keys.Escape] = false;
            PrintableKeys[Keys.IMEConvert] = false;
            PrintableKeys[Keys.IMENonconvert] = false;
            PrintableKeys[Keys.IMEAceept] = false;
            PrintableKeys[Keys.IMEModeChange] = false;
            PrintableKeys[Keys.Space] = false;
            PrintableKeys[Keys.PageUp] = false;
            PrintableKeys[Keys.Prior] = false;
            PrintableKeys[Keys.Next] = false;
            PrintableKeys[Keys.PageDown] = false;
            PrintableKeys[Keys.End] = false;
            PrintableKeys[Keys.Home] = false;
            PrintableKeys[Keys.Left] = false;
            PrintableKeys[Keys.Up] = false;
            PrintableKeys[Keys.Right] = false;
            PrintableKeys[Keys.Down] = false;
            PrintableKeys[Keys.Select] = false;
            PrintableKeys[Keys.Print] = false;
            PrintableKeys[Keys.Execute] = false;
            PrintableKeys[Keys.PrintScreen] = false;
            PrintableKeys[Keys.Snapshot] = false;
            PrintableKeys[Keys.Insert] = false;
            PrintableKeys[Keys.Delete] = false;
            PrintableKeys[Keys.Help] = false;
            PrintableKeys[Keys.D0] = true;
            PrintableKeys[Keys.D1] = true;
            PrintableKeys[Keys.D2] = true;
            PrintableKeys[Keys.D3] = true;
            PrintableKeys[Keys.D4] = true;
            PrintableKeys[Keys.D5] = true;
            PrintableKeys[Keys.D6] = true;
            PrintableKeys[Keys.D7] = true;
            PrintableKeys[Keys.D8] = true;
            PrintableKeys[Keys.D9] = true;
            PrintableKeys[Keys.A] = true;
            PrintableKeys[Keys.B] = true;
            PrintableKeys[Keys.C] = true;
            PrintableKeys[Keys.D] = true;
            PrintableKeys[Keys.E] = true;
            PrintableKeys[Keys.F] = true;
            PrintableKeys[Keys.G] = true;
            PrintableKeys[Keys.H] = true;
            PrintableKeys[Keys.I] = true;
            PrintableKeys[Keys.J] = true;
            PrintableKeys[Keys.K] = true;
            PrintableKeys[Keys.L] = true;
            PrintableKeys[Keys.M] = true;
            PrintableKeys[Keys.N] = true;
            PrintableKeys[Keys.O] = true;
            PrintableKeys[Keys.P] = true;
            PrintableKeys[Keys.Q] = true;
            PrintableKeys[Keys.R] = true;
            PrintableKeys[Keys.S] = true;
            PrintableKeys[Keys.T] = true;
            PrintableKeys[Keys.U] = true;
            PrintableKeys[Keys.V] = true;
            PrintableKeys[Keys.W] = true;
            PrintableKeys[Keys.X] = true;
            PrintableKeys[Keys.Y] = true;
            PrintableKeys[Keys.Z] = true;
            PrintableKeys[Keys.LWin] = false;
            PrintableKeys[Keys.RWin] = false;
            PrintableKeys[Keys.Apps] = false;
            PrintableKeys[Keys.NumPad0] = true;
            PrintableKeys[Keys.NumPad1] = true;
            PrintableKeys[Keys.NumPad2] = true;
            PrintableKeys[Keys.NumPad3] = true;
            PrintableKeys[Keys.NumPad4] = true;
            PrintableKeys[Keys.NumPad5] = true;
            PrintableKeys[Keys.NumPad6] = true;
            PrintableKeys[Keys.NumPad7] = true;
            PrintableKeys[Keys.NumPad8] = true;
            PrintableKeys[Keys.NumPad9] = true;
            PrintableKeys[Keys.Multiply] = true;
            PrintableKeys[Keys.Add] = true;
            PrintableKeys[Keys.Separator] = true;
            PrintableKeys[Keys.Subtract] = true;
            PrintableKeys[Keys.Decimal] = true;
            PrintableKeys[Keys.Divide] = true;
            PrintableKeys[Keys.F1] = false;
            PrintableKeys[Keys.F2] = false;
            PrintableKeys[Keys.F3] = false;
            PrintableKeys[Keys.F4] = false;
            PrintableKeys[Keys.F5] = false;
            PrintableKeys[Keys.F6] = false;
            PrintableKeys[Keys.F7] = false;
            PrintableKeys[Keys.F8] = false;
            PrintableKeys[Keys.F9] = false;
            PrintableKeys[Keys.F10] = false;
            PrintableKeys[Keys.F11] = false;
            PrintableKeys[Keys.F12] = false;
            PrintableKeys[Keys.F13] = false;
            PrintableKeys[Keys.F14] = false;
            PrintableKeys[Keys.F15] = false;
            PrintableKeys[Keys.F16] = false;
            PrintableKeys[Keys.F17] = false;
            PrintableKeys[Keys.F18] = false;
            PrintableKeys[Keys.F19] = false;
            PrintableKeys[Keys.F20] = false;
            PrintableKeys[Keys.F21] = false;
            PrintableKeys[Keys.F22] = false;
            PrintableKeys[Keys.F23] = false;
            PrintableKeys[Keys.F24] = false;
            PrintableKeys[Keys.NumLock] = false;
            PrintableKeys[Keys.Scroll] = false;
            PrintableKeys[Keys.LShiftKey] = false;
            PrintableKeys[Keys.RShiftKey] = false;
            PrintableKeys[Keys.LControlKey] = false;
            PrintableKeys[Keys.RControlKey] = false;
            PrintableKeys[Keys.LMenu] = false;
            PrintableKeys[Keys.RMenu] = false;
            PrintableKeys[Keys.BrowserBack] = false;
            PrintableKeys[Keys.BrowserForward] = false;
            PrintableKeys[Keys.BrowserRefresh] = false;
            PrintableKeys[Keys.BrowserStop] = false;
            PrintableKeys[Keys.BrowserSearch] = false;
            PrintableKeys[Keys.BrowserFavorites] = false;
            PrintableKeys[Keys.BrowserHome] = false;
            PrintableKeys[Keys.VolumeMute] = false;
            PrintableKeys[Keys.VolumeDown] = false;
            PrintableKeys[Keys.VolumeUp] = false;
            PrintableKeys[Keys.MediaNextTrack] = false;
            PrintableKeys[Keys.MediaPreviousTrack] = false;
            PrintableKeys[Keys.MediaStop] = false;
            PrintableKeys[Keys.MediaPlayPause] = false;
            PrintableKeys[Keys.LaunchMail] = false;
            PrintableKeys[Keys.SelectMedia] = false;
            PrintableKeys[Keys.LaunchApplication1] = false;
            PrintableKeys[Keys.LaunchApplication2] = false;
            PrintableKeys[Keys.OemSemicolon] = true;
            PrintableKeys[Keys.Oemplus] = true;
            PrintableKeys[Keys.Oemcomma] = true;
            PrintableKeys[Keys.OemMinus] = true;
            PrintableKeys[Keys.OemPeriod] = true;
            PrintableKeys[Keys.OemQuestion] = true;
            PrintableKeys[Keys.Oemtilde] = true;
            PrintableKeys[Keys.OemOpenBrackets] = true;
            PrintableKeys[Keys.OemPipe] = true;
            PrintableKeys[Keys.OemCloseBrackets] = true;
            PrintableKeys[Keys.OemQuotes] = true;
            PrintableKeys[Keys.Oem8] = false;
            PrintableKeys[Keys.OemBackslash] = true;
            PrintableKeys[Keys.ProcessKey] = false;
            PrintableKeys[Keys.Attn] = false;
            PrintableKeys[Keys.Crsel] = false;
            PrintableKeys[Keys.Exsel] = false;
            PrintableKeys[Keys.EraseEof] = false;
            PrintableKeys[Keys.Play] = false;
            PrintableKeys[Keys.Zoom] = false;
            PrintableKeys[Keys.NoName] = false;
            PrintableKeys[Keys.Pa1] = false;
            PrintableKeys[Keys.OemClear] = true;
            PrintableKeys[Keys.KeyCode] = false;
            PrintableKeys[Keys.Shift] = false;
            PrintableKeys[Keys.Control] = false;
            PrintableKeys[Keys.Alt] = false;
        }
    }
}